package com.saydc.actions.empleados;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.saydc.dao.EmpleadosDAO;
import com.saydc.dao.EvaluacionesDAO;
import com.saydc.dao.PromocionesDAO;
import com.saydc.forms.promociones.BusquedaEmpleadoForm;
import com.saydc.model.Empleado;
import com.saydc.model.EvaluacionEmpleado;
import com.saydc.model.Promocion;

public class BuscarEmpleadoAction extends Action {
	
	private static int BUSQUEDA_X_LEGAJO = 1;
	private static int BUSQUEDA_X_NOMBRE = 2;
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		BusquedaEmpleadoForm busquedaForm = (BusquedaEmpleadoForm)form;
		EmpleadosDAO dao = EmpleadosDAO.getInstance();
		
		int valorBusqueda = busquedaForm.getBusqueda();
		Empleado empleadoBuscado = null;
		if(valorBusqueda == BUSQUEDA_X_LEGAJO){
			empleadoBuscado = dao.buscarEmpleadoPorLegajo(busquedaForm.getLegajo());
		}else if(valorBusqueda == BUSQUEDA_X_NOMBRE){
			empleadoBuscado = dao.buscarEmpleadoPorNombre(busquedaForm.getNombre());
		}
		
		request.getSession().setAttribute("empleado", empleadoBuscado);
		EvaluacionesDAO evalDao = EvaluacionesDAO.getInstance();
		List<EvaluacionEmpleado> listaEvaluaciones = evalDao.getEvaluacionesEmpleado(empleadoBuscado.getIdEmpleado());
		request.getSession().setAttribute("listaEvaluaciones", listaEvaluaciones);
		PromocionesDAO promoDao = PromocionesDAO.getInstance();
		List<Promocion> listaPromociones = promoDao.getPromocionesEmpleado(empleadoBuscado.getIdEmpleado());
		request.getSession().setAttribute("listaPromociones", listaPromociones);
		request.getSession().setAttribute("listaPuestosTrabajados", empleadoBuscado.getPuestosTrabajadosOrderByFecha());
		
		return mapping.findForward("success");
	}

}
